Guides

Templating guide

Explains how to use dynamic templates

Creating your own portlets with custom apps

Developing with the KongDB, the Kademi JSON database

Custom Error Pages

Eamil templates

Custom reports

Summarises the different types of forms in Kademi, and how you can use them

Email Templates

Eamil templates

Forms

Summarises the different types of forms in Kademi, and how you can use them

Handling Email with a Custom App

Shows how to capture incoming emails

Server side JS controllers

Developing with the KongDB, the Kademi JSON database

Using the Kademi JSON Database

Developing with the KongDB, the Kademi JSON database

OAuth 2

Explains how to use OAuth 2 with Kademi

Managing permissions with roles and groups

Developing with the KongDB, the Kademi JSON database

Profile matching and merging in integration scripts

Video walkthrough of using the profile matching and merging API in integration scripts

Developing with Surveys

Shows how to create forms which submit survey results, and use the results with ajax

User and Membership API

Explanation of the API for manipulating profiles, groups and group memberships

Screens

Admin App

The admin app contains all of the general administrative screens such as managing users and groups

Dashboard Alerts App

This lets you display alerts to users on their dashboard. They can be sent to groups immediately, or triggered from events with automation

Auctions App

The auctions app lets you run auctions on your websites, either using points or as regular cash auctions. Auctions can be of different types including the usual highest bid type, or lowest unique bid.

aws


Blogs

This app lets you create blogs, where each blog is a list of blog articles. Blogs have tags which users can select to indicate preference or browse. Articles can be featured for greater prominence and have a set of images.

Calendars

Calendars are mobile enabled, and allow you to invite users to events by email which they can register to attend. Includes scheduled reminders and confirmation emails.

ContactUs App

The ContactUs app creates contact pages for users of your website to submit forms, typically requesting informtation. These forms can be customised to collect general information, such as surveys

Dashboard App

The Dashboard app gives each user a dashboard which presents them with a jumping off point when they log in. Other apps might add components to the dashboard

ecommerce


Email App

The email app has featured for sending automated and group emails, and gives users their own inbox for a summary of notifications

error


EWay Payments App

Provides a connector to the EWay payments processor service. You must get an EWay account to use this app.

FileServer App

FileServer app allows you to use Fuse like an internet file server.

Forums App

Forums app allows you to run forums for your users.

funnels


GroupResources App

Group Resources lets you share files with particular user groups

Integration services

Integrate with external systems and data sources, by implementing email and web endpoints that can send and receive and transform files and data

kongodb


Online Learning App

The learning app allows you to create courses and incentives and manage learners progress

marketplace


orgsLocator


payment


Products App

The Products app gives you a database that you can add your products to. Users can browse the products and order them. Normally used for ordering samples and marketing materials.

referral


reporting


rewardstore


salesdata


Scheduler App

Scheduler runs jobs at certain times. Good for sending reports etc to administrators

search


shoppingcart


shortUrl


sms


team


user


videosurveyapp


Vouchers app


Templating reference summaries

Templating

AbstractBranchFolder

Base class for resources which represent a branch

AbstractContentResource


AbstractECommerceStoreCollectionResource

The common base class for both the store folder and category folders Provides methods for searching for products within this resource. Eg a search within a ECommerceStoreCategoryFolder only yields results within that category, but a search on ECommerceStoreFolder yields results from all categories in the store

AbstractManageAssetResource


AbstractResource

Base class for pretty much all resources

AbstractRewardStoreCollectionResource


AcceptQuoteGoal

When a profile is added/removed to a group

ActivateAlertAction


AddToGroupGoalAction


AddToOrgTypeGoalAction


AggBucket


AlertBean


AlertsApp


AllocateVoucherGoalAction


AppControlBean


AppReport


AppTransactionManager

A transaction manager intended specifically for use with custom apps This is available as the transactionManager variable. So in custom apps you use this:
   transactionManager.commit();
 

Applications

Provides access to other applications Eg

AppsPageHelper.Update


AppsPageHelper


AssetManager


AssetTypeService.ContentTypes


AssetsFolder


AssignToGoalAction


AttendeeGuest

Used by the calendar manager

AuctionApp


AuctionBidBean


AuctionBidEvent.AuctionBidAction


AuctionBidEvent

Fired when a bid is placed. Can mean that a user has placed a new bid, or that a user who was previously in teh lead is no longer leading
Event ID: auctionBid

AuctionBidEventTriggerType


AuctionBidSimpleBean


AuctionClosedEvent

Fired when an auction closes, it has the following actions:
  • CLOSED_WITH_WINNER - Fired when there is a winner, the source profile is the winner
  • CLOSED_WITHOUT_WINNER - Fired when there is no winner
  • CLOSED_BIDDER - Fired for every user that has placed a bid on the auction. Excludes the winner

AuctionClosedEventTriggerType


AuctionFolder.AuctionImageResource


AuctionFolder.Image

An image which has been assigned to the auction with an optional orientation. These are generally used for templating

AuctionFolder


AuctionsFolder

Represents the root collection of auctions

AutoEmailSearchManager

Methods for accessing automation and mail stats

AutomationGoal

When an automation event is triggered

BaseBucket


BaseSearchPage


Begin


BlogArticleFolder.BlogFileResource


BlogArticleFolder.BlogImageResource


BlogArticleFolder.Image

An image which has been assigned to the blog with an optional orientation. These are generally used for templating

BlogArticleFolder

Represents an article in a blog.

An article has a title, body, brief description and blog images. An article is also a folder and can contain resources such as images used in body content

Blog images are images which are specifically assigned to the article with an orientation and they are used for templating purposes.

Articles have an approval process to allow blog authors to have their work checked before being published to the website.


BlogFolder

A BlogFolder is a folder containing blog articles. It also has tags and categories which can be assigned to its articles

BlogsFolder

Represents a collection of blogs, where a blog is a stream of articles

BlogsResourceList

A specialised type of ResourceList, this has extra methods for handling lists of blog articles

BranchGoal

A goal which is linked to multiple other goals. This goal is achieved when one of the subsequent goals is achieved This allows a journey to have branches, like decision nodes but where we wait for an outcome.

CalEventAttendeesResource


CalEventResource

Represents a calendar event, ie an invitation
Users can RSVP for this event by posting a form to is containing a parameter 'rsvp'

Calc


CalendarEventAccepted


Event ID: calendar-event

CalendarEventAcceptedTriggerType

Called when a user RSVP's for a calendar event

CalendarEventDeclined


Event ID: calendar-event

CalendarFolder


CalendarHomeFolder


CancelGoalAction


CashCurrency


CategoryBean


CategoryTableProvider


CertificateFolder

Represents a certificate, typically awarded for completed training activities This folder will generate HTML applying a template. The parent folder will usually be a module folder, and if so status for the current user about that module will be referenced in the certificate.

ChildrenOfTypeMap


Column

Maps a column or attribute to a field name. Used for inserting data

ColumnsHelper

Provides typed access to the value in a column, including the ability to evaluate expressions

CommentBean

Represents a comment by a user on some resource.

CommentsResource


ComponentBean.AttsMap


ComponentBean


ComponentHtmlTemplater

This HTML Templater assumes page templates contain components, so should not be directly templated. Instead this will look for a master template tag in the page template, and then invoke that passing the template path for it to use

ConstExpression


ContactEvent

This event is fired when a user submits a contactus form. It contains an attribute called contactRequest, which returns the ContactRequest record
Event ID: contact

ContactEventTriggerType


ContactFormEngagementScoringFactorType

Scores engagement based on whether users have opened emails (ie pixel tracker has been hit) , or converted (ie clicked through)

ContactFormGoal

When a contact form/landing page is accessed or submitted

ContactRequest


ContactRequestBean.AttachmentBean


ContactRequestBean.FieldBean


ContactRequestBean

Represents a single contact request, which is a submission from a (possibly anonymous) user

ContactRequestsJsonResource

Outputs the stream activity as json

ContactUsFormPage

Submit forms to this resource (usually on /contactus) as a POST to send contact email requests The contactus form page is conceptually very similar to the group registration page. Both will create a profile if it doesnt exist and you can submit data to both, and both can trigger events to send emails, etc. The difference is that a contact submission only creates new data, it never changes existing data. Whereas registering a user can allow existing profile data to be modified.

Captcha

If a Captcha app is enabled it will be used to verify the response. You can customise the error response message by sending a parameter called invalidCaptchaMessage

ContentSearchPage

Use this to do queries, optionally including aggregations and selecting terms Eg contentSearch?q=farm&aggregations=type/categories&term-type=News This will query for: query text = farm (will search in title, content) type = News (will look for a type field of exact value News) aggregations: first by type, then with a nested aggregation of categories

ControllerMappingBuilder

Use this to create a URL to controller mapping for a custom app or for a website controller. Use either the admin or website controller root objects depending on whether you want to create a controller for websites or for the administration system
  • controllerMappings.adminController() - For admin screens
  • controllerMappings.websiteController() - For website controllers
For example:
 controllerMappings.adminController().path("/bluefin").enabled(true).defaultView(views.templateView("bluefin/manageProjects"))
         .addMethod("POST", "addProject", "newProjectName")
         .addMethod("POST", "setupDatabase", "setupDatabase") // temporary only, needs to be part of initialisation
         .addMethod("POST", "newCandidate", "newCandidateId")
         .addMethod("POST", "publish", "publish")
         .addMethod("POST", "startSync", "sync") // start a sync operation, will redirect if need oauth login
         .addMethod("POST", "updateFields", "updateFields") // update project fields
         .build();

 

ControllerMappingList.JsProcessable


ControllerMappingList


ControllerResource

This is the resource which gets created when a controller mapping is located. It executes the javascript and templates Scripts executed from a ControllerResource have access to these global variables

CopyLeadFileGoalAction


CountryCodes.CountryCode


CountryCodes


CourseFolder

A course, which is just a special type of folder that contains modules

CpdAwardBean


CreateCalendarEventGoalAction


CreateDataSeriesRecordGoalAction


CreateNoteGoalAction


CreateTaskGoalAction


CryptoImpl


CsvInput

Parses CSV files into lines of discrete values which are fed to row processing steps

CsvOutput

Converts incoming rows into a CSV stream sent to the pipeline output

CsvView


Currency

Represents some type of currency which can be used to make payments. Different currencies are not interchangeable. Currencies, in this context, include actual physical currencies like USD, AUD, etc, as well as things which can be considered means of payment within Kademi but are not necessarily actual currencies, such as reward points, Bitcoin, trade dollars, etc

CustomerAction

Represents an action in relation to a customer

DashboardAlertPage


DashboardPage

Dashboard for the user. Most functions will be provided by PortletApplications which will be invoked from the template using the PortletsDirective Eg: #portlets("messages") , which will render portlets for the messages section of the page Standard sections are intended to be: messages - brief list of messages at top of page primary - this is the main section of the page, with about 70% width secondary - this is a narrowed section of the page, possible lower down for small screen clients

DataSeriesData


DataSeriesFolder

Represents a Data Series, and provides properties for ranking participants etc

DataSeriesLeaderBoard.LeaderboardRanking

Represents a ranking of a participant. The rank is zero indexed, and zero is the highest or lowest as appropriate for the method which returned the results The participant is either an OrgData or ProfileBean

DataSeriesLeaderBoard

This represents a period of time (if dates have been specified) for a data series, which can be queried to find the top (or lowest) results Note that results can be attributed either to an individual (ie a profile) or to the organisation they're in (eg store or other business unit)

DataSeriesProvider

NOTE - use the SalesDataInserter instead!!!!

DataSeriesValueGoal

When a user (or an org they're connected to) has achieved a certain value in a specified data series

DatabaseSourceStep

Executes a query against the kademi database and feeds each resulting object to the next step Select the appropriate query source with providerId

DatabaseUpdateStep

Intended to receive rows. Updates, deletes or inserts into the selected provider based on the mode property which can be - update, insert, delete, updateOrInsert Update, Delete and updateOrInsert operations require an identifier This step works with a provider that provides access to a particular table. Available providers are:

DecisionAction


DecisionStep

Selects the next step from a list of options Configured with a map of next steps, where the key for each step is used to select it Provide with either a column number or an attribute name to use to get the value to select the next step

DefaultElasticSearchManager.DefaultKSearchRequestBuilder


DefaultElasticSearchManager.DefaultKSearchResponse


DefaultElasticSearchManager.DefaultMappingMetaData


DefaultStreamEvent


DependencyMappingBuilder


DiffieHellmanModule


DirectoryResource

Represents a version of a directory, containing the members which are in that directory in the repository snapshot

DiscountPromotionItem


DoPasswordResetPage


ECommerceCartItemResource


ECommerceShoppingCartResource


ECommerceStoreFolder

The root resource for an e-commerce store. This provides access to categories and products linked to this store See the base class AbstractECommerceStoreCollectionResource for more

EmailApp.EmailStats


EmailAttachment

Represents an email attachment.

EmailAttachmentFile


EmailContentService.EmailContent


EmailContentService


EmailDeliveryEvent

Fired when an email is delivered, failed to deliver, opened, converted
Event ID: emailDelivery

EmailDeliveryEventTriggerType

This type of event is fired on an email delivery result, ie when delivery has succeeded, failed, opened or converted

EmailFolder

List emails for this user

EmailItem

Represents a task to send an email, which may have been sent or might be queued to be sent. Also represents an email received, if the recipient profile is set it will show in their internal inbox. Email attachments: TODO - probably just have a list of name and crc, then the attachment can be put in any repository

EmailItemBuilder

Use this to create and send an email. Example use:
 applications.email.emailBuilder()
      .recipientAddress('test@yourdomain.co')
      .fromAddress('noreply@yourdomain.co')
      .subject('An email from ME! :-)')
      .html('<p><strong>Hello World</strong></p>')
      .build();
 
or
 var recipient = page.find('/users/test3/').thisProfile;
 applications.email.emailBuilder()
      .recipient(recipient)
      .fromAddress('noreply@yourdomain.co')
      .subject('An email from ME! :-)')
      .html('<p><strong>Hello World</strong></p>')
      .build();
 

EmailItemFolder

Represents a single email, which might contain attachments

EmailOpenAcknowledgePage

Just outputs a one-pixel gif, and records the associated email as being opened

EmailReceivedEvent

Fired when a user receives an email

EmailReceivedEventTriggerType


EmailResponseEngagementScoringFactorType

Scores engagement based on whether users have opened emails (ie pixel tracker has been hit) , or converted (ie clicked through)

EmailResultGoal

Transitions based on the result of the last email sent by this funnel

EmailSendGoal

Goal acheived when a matching email is **sent**, regardless of delivery status

EndGoalAction


EndPointMapping


EngagementScoringFactor


EngagementScoringFactorType.EngagementScoringProperty


EngagementScoringFactorType


EventBuilder


EventGoal

When an trigger event is fired. Works with TriggerFunnelEvent

EventWrapper


EwayApp


ExcelInputStep.NextSheetStep


ExcelInputStep

Parses incoming stream as an excel workbook (xslx). This step can be configured to pass on the entire workbook, or just a single sheet, or it can process rows optionally skipping headers. You can specify a nexts step for each sheet (either use sheetNum or sheetName) <ExcelInputStep> <skipHeaderRow>false</skipHeaderRow> <processRows>false</processRows> <nextSheetSteps> <ExcelInputStep sheetNum="0"> <next class="JsRowStep"/> </ExcelInputStep> </nextSheetSteps> <useXml>false</useXml> </ExcelInputStep> Or a single next step which will be given the entire workbook as a org.apache.poi.ss.usermodel.Workbook <ExcelInputStep> <skipHeaderRow>false</skipHeaderRow> <processRows>false</processRows> <next class="JsRowStep"/> </ExcelInputStep>

ExcelOutputStep

Is intended to be used by other steps to create, populate, and output an excel document dynamically This class has methods to create a workbook which can then be manipulated from a previous step

ExpiringPointsList


ExtProfileBean

Just like a normal profile bean, but with extra stuff that admins can see

ExtraField


Facet

Extracted From FacetsReport

FacetsReport.LongRangeFacetBucket


FacetsReport.TermFacetBucket

A term bucket supports sub buckets

FacetsReport


FastPointsDebitRowProvider


FastPointsRowProvider


FederatedLoginProviderBean


FieldBean


FieldMapping


FileHashView


FileManager


FileResource

A FileResource represents a file, such as an image or video. It will also represent HTML pages and there are methods for accessing the structured content within a HTML page, such as title, body and data parameters

FileUploadEvent

Fired when a user joins a group

Event ID: subscription

FileUploadEventTriggerType


FileUtils


FixedWidthInput

Parses fixed width text files into lines of values which can be fed to row processing steps

ForkGoalAction


FormData


FormGoal

When a profile is added/removed to a group

Formatter

Handy functions exposes to rendering logic for formatting.

ForumReplyResource


Funnel


FunnelEdm

Links a Funnel node with a EmailItem or SmsItem, so we can report on EDM stats

FunnelTester

Added to a funnel so that users with particular email addresses get special treatment to facillitate testing

GeoIPService


GeoIpWrapper

A Wrapper for the MaxMind Geo IP2 lookup

GeoLoc


GiftPromotionItem


GoalAttainedTriggerType


GrantRewardsGoalAction


GroupGoal

When a profile is added/removed to a group

GroupInWebsiteFolder

Represents a group which has access to the current website. This can be used to find information about registration options, etc

GroupMembershipTableProvider


GroupRegistrationEvent

Fired when a user submits a registration form successfully
Event ID: registration

GroupRegistrationPage

Manages registration of a user when signing up to a group

GroupSignupStat


GuestBean


HttpWrapper

Provides access to the http request and response objects for when handling http operations

InfusionsoftCreateOpportunityAction


IntegrationApp

This app assists with getting data in and out of your kademi account, integrating with your external data stores. Integration services are made available through the websites which have the integration app enabled. You configure it by creating an XML file in /theme/integration.xml, which has a list of endpoint mappings. For example: Each end point identifies the type, ie http, email, etc, as well as the address to handle requests for (ie email address or the path of a web resource)

ItemCount

Represents an item and the number of its occurences. Used with blog tags

JsRowStep.RowWriter


JsRowStep

Executes javascript for each row. The js is expected to transform or aggregate incoming data, probably holding stateful information between calls to writeRow. Output will be generted from the js by calling writeRow(..) Script context variables:
  • pipeline - a Pipeline object
  • thisStep - also a referene to the current Pipeline
  • formatter - the Formatter
  • nextStep - a NextStep object, representing the next step to be executed after the current
  • log - the logger for generating console log output
  • applications - an Applications object, use it to reference other apps and their services, eg applications.search.searchManager.search(...)
  • fileManager - a FileManager object
Here's a fairly common example:
 <RecordExecutionStep>
 <preventDuplicates>false</preventDuplicates>
 <execIdTemplate>StarClass-Dealer-Targets_2015</execIdTemplate>
 <next class="TransactionStep"
 alwaysRollback="false"> <next
 class="ExcelInputStep"> <useXml>true</useXml>
 <processRows>true</processRows> <nextSheetSteps>
 <NextSheetStep sheetNum="0" startRow="2">
  <next class="JsRowStep"> <!-- Execute the next
 step for each month, setting the month number into attribute monthNum -->
 <jsPath>/integration/integration.js</jsPath>
 <execFn>foreachMonth</execFn>     
 <next class="SalesDataInserter" mode="updateOrInsert"
 logInserts="true" logUpdates="true">
 <seriesName>star-class-partspurchase-data</seriesName> <column
 field="attributedTo" columnName="D"> <expr> org
 = pipeline.thisOrg.findChildOrgByField("StoreCode", value); if(org
 != null){ return org.orgId; } return null; </expr> </column>
 <column field="amount" > <!-- column G + 10*month -->
 <expr><![CDATA[ col = 2 +
 formatter.toInteger(pipeline.attributes.monthNum); if (0 >= row[col]) {
 return 1; } else { return row[col]; } ]]></expr> </column>

 <column field="fromDate">
 <expr>formatter.monthStart(formatter.now,
 pipeline.attributes.monthNum)</expr> </column> <column
 field="toDate"> <expr>formatter.monthEnd(formatter.now,
 pipeline.attributes.monthNum)</expr> </column> </next>

 </next> </NextSheetStep> </nextSheetSteps> </next>
 </next> </RecordExecutionStep>

JsScheduleBean


JsScheduler


JsonDatabase

This represents a database which may contain JSON documents A JsonDatabase will normlly be connected to a website and accessed either through a REST api, or server side through js controllers

JsonDatabaseFolder


JsonDatabaseService.OnReindexProgressEvent


JsonDatabasesFolder


JsonDocumentResource


JsonResult

Value object holding the result of some operation in a generic form which is suitable for outputting as JSON.

JsonView

Generates JSON output. The source can be a named page attribute, or an actual object. There is an option to wrap the data in a JsonResult object to be compatible with the kademi forms plugin

KChatApp


KHotSpotsMonitor.HotSpot


KademiCalendarSearchService.AttendeeResource

Represents an explicit invitation to an event for a user

KademiCurrentDateService


KademiSimpleJdbcEventListener.SqlStats


KademiSubscriptionEvent


KademiSubscriptionGoal


KademiWebsocketWrapper


KpiDataPage.KpiLevelBean


KpiDataPage

A KpiDataPage is a resource class which represents a KPI. The parent of a KpiDataPage is the data series that it belongs to. A KPI has 3 main ingredients:
  • A way of aggregating records to get a single number. Eg sum, count, average. This is the aggregation
  • A time interval, such as weekly, monthly, quarterly. As well as the interval there is a multiples, ie 2 weekly, 3 monthly, etc
  • A list of levels which categorise the result. Eg 0-80% is Poor, 80-90% is Good, and 90-100% is Great
When a KPI period is passed then assessments can be generated. Eg if you have a monthly KPI you might generate assessments for January on the 1st of Feb. The assessment is a final result which will not change even if the data series records are subsequently altered. Depending on what KPI result user has achieved they may reach a level, and level may have rewards associated with it. Rewards are allocated as a second step after KPI assessments are generated.

KpiLeaderBoard


KpiResultBean


LeadBean


LeadCompaniesFolder


LeadCompanyPage


LeadFilePage


LeadFileResource


LeadFilesPage


LeadFormBySalesPage


LeadFormNodePage


LeadFormPage


LeadFormsPage


LeadManAnalyticsPage


LeadPage


LeadProfilePage


LeadProfilesPage


LeadTaskPage


LeadTasksCsvPage


LeadTasksPage


LeadTeamPage.TeamMember


LeadTeamPage


LeadmanService


LeadsFolder.TaskStats


LeadsFolder.TeamStats


LeadsFolder


LeadsForCustomerPage


LearnerProgressEvent

An event triggered by some condition related to learning progress, eg starting, completing or not completing after some period. Event ID: learnerProgress

LearnerProgressEventTriggerType


LearningApp


LearningTemplateHelper

This is a collection of functions to assist with templating for learning related content

ListOptionType


MailboxMapping

This is a mapping for a mailbox controller.

MailboxMappingBuilder

Use this to create a mailbox for a custom app. This will allow the custom app to capture incoming E-Mails. For example:
 controllerMappings
         .mailboxController()
         .enabled(true)
         .verifyMailbox('verifyMailbox')
         .storeMail('storeMail')
         .build();
 

MaintCachePage.PerRequestSqlInfo


MaintCachePage.SqlInfo


MaintCachePage.SqlStatsAndInfo


ManageAssetsFolder


ManageBinaryAssetFolder


ManageContactRequestsFolder


ManageContentItemFolder


ManageEmailItemsFolder.EmailItemBean


ManageGroupResourcesPage.GroupInWebsiteItem


ManageImageAssetFolder


ManageJsonDatabaseFolder


ManagePostsPage.RecentPostBean


ManageProfileApplication.ProfileActionBean


ManageProfileApplication.ProfileTab


ManageProfileApplication.SummaryPanel


ManageQueryItemFolder


ManageSendEmailResource.LeadBean


ManageShoppingCartFolder


ManageShoppingCartsFolder


ManageSkusFolder.Variant


ManageTextAssetFolder


ManageUsersResultDbDTO


ManageUsersResultElasticDTO


ManageVideoAssetFolder


ManualPaymentApp

This is a simple payment provider, which does not ask for additional payment information

MapBuilder


MapStep

Adds rows to a map keyed on a value generated by an expression. The map is set into a pipeline attribute Rows are also passed through unchanged to the next step Example: <MultiStep> <nextSteps> <DatabaseSourceStep providerId="survey"> <next class="co.kademi.server.integration.impl.MapStep"> <keyColumn column="0"> <expr>value.profile.userId</expr> </keyColumn> <valueColumn column="0"/> <keyAttribute>r1</keyAttribute> </next> <column field="rewardNames"> <value class="string">r17744</value> </column> </DatabaseSourceStep> <DatabaseSourceStep providerId="survey"> <next class="ExcelOutputStep"> <firstSheetTitle>My first sheet</firstSheetTitle> <headers> <string>ID</string> <string>Reward</string> <string>First Name</string> <string>Last Name</string> <string>r1 Pets name</string> <string>r2 Pets name</string> </headers> <column field="id" column="0"> <expr>value.id</expr> </column> <column field="id" column="0"> <expr>value.reward.name</expr> </column> <column field="firstName" column="0"> <expr>value.profile.?firstName</expr> </column> <column field="surName" column="0"> <expr>value.profile.?surName</expr> </column> <column field="ReccomendBasedOnRego" column="0"> <expr>value.answers.?answer_petsName</expr> </column> <column field="ReccomendBasedOnRego" column="0"> <expr>pipeline.attributes.r1[value.profile.userId].answers.?answer_petsName</expr> </column> </next> <column field="rewardNames" > <value class="string">r25562</value> </column> </DatabaseSourceStep> </nextSteps> </MultiStep>

MembershipBean


MembershipList

Just a list of MembershipBean objects, with a get method to allow retrieving them by name

MenuItem


MenuItemList


MenuManager


ModuleCompleteAction

Represents something to do when a user completes a module. Typically: - generate a certificate: defines the certificate to generate (by ID) and the number of CPD points to award (if any) - give rewards such as gift vouchers or entries in a draw: defintes the reward (by ID) and the number of rewards to give Type should be one of: - certificate - reward

ModuleFolder


ModuleProgressEvent.ModuleProgressAction


ModuleProgressEvent

An event triggered by some condition related to learning progress, eg starting, completing or not completing after some period

The attributes collection contains the ModuleFolder called module.


Event ID: moduleProgress

ModuleProgressEventTriggerType


ModuleProgressGoal

Triggers a goal as attained when the

MultiStep

A step which consists of a number of steps, each given the same inputs

MvelExpression


MyCalendarsPage


MyFilesPage


MyForumFolder


MyForumsFolder


MyInboxPage


MyLearningPage

This renders the myLearning template, and is accessed from the menu so is not within the context of any program or course

MyPointsDebitInfo

Information about the debits on awarded points

MyPointsInfo

Information about the award of points

MyQuestionFolder


MyRewardEntry

Represents an entry for a user in a reward

MyRewardInfo.RankAndPoints


MyRewardInfo.TeamMemberPoints

Information about the award of points to a member of the current user's team (aka organisation)

MyRewardInfo

Information about this user and what they've been awarded from this reward, and how this compares to others in their organisation

MyRewardsFolder

This is the home page for rewards information for a user, normally accessed on /rewards Within this folder are RewardFolder objects for each reward

NewCommentEvent

An event triggered when a comment is posted

Attributes

comment - the text of the posted comment pageUrl - the url of the page on which the comment was posted
Event ID: newComment

NewCommentEventTriggerType


NextStep

Just holds a reference to the current pipeline and the next step to allow easy next invocation from scripts

OAuth2Details


OAuth2ProviderTemplates


OnSearchReindexProgressEvent


OrderBean


OrgData

Represents an organisation, and allows access to information about members of that organisation You can get the OrgData for the organisation which owns the current website in templating with the orgData property of the WebsiteRootFolder eg $page.find("/").orgData You can also get the OrgData object for a user's membership And once you have an OrgData, if it contains child organisations then you can use the childOrgs and allSubOrgs methods on the OrgData object to get them

OrgDataList

A list of OrgData objects, with methods for filtering that list

OrgMapData


OrgModulesStats

Contains module statistics for the user's primary organisation. ie the organisation which the user's primary membership is for Typically accessed from a CourseFolder or Module folder via orgStats

OrgTypeBean


OrganisationRootFolder

This is the root folder for the admin site. The admin site is used to setup users and websites accessing the server

OrganisationTableProvider

Updates child organisations of the current account Example:
 <next class="DatabaseUpdateStep" providerId="organisation" mode="updateOrInsert" setIntoAttribute="dealership">
 <!-- use star guild code as orgid, with leading zeros - 0000133433 -->
 <column field="orgId" column="1" >
 <expr>
 if(formatter.isNull(value) || value == "N/A"){
 return formatter.padWith("0", row[2], 10);
 }else{
 return formatter.padWith("0", value, 10);
 }
 </expr>
 </column>
 <column field="title" column="0" />
 <column field="orgType" >
 <value class="string">dealership</value>
 </column>
 <column field="StarClExDealerCode" column="2" /> <!-- custom field for dealership -->
 <column field="StarGuildCode" column="1" /> <!-- custom field for dealership -->
 <column field="address" column="0" />
 <column field="addressLine2" column="9" />
 <column field="suburb" column="10" /> <!-- custom field -->
 <column field="state" column="11" />
 <column field="postcode" column="12" />
 <column field="phone" column="13" />
 <column field="country">
 <value class="string">AU</value>
 </column>
 <skipIfBlankColumns>
 <int>0</int>
 <int>2</int>
 <int>3</int>
 </skipIfBlankColumns>

 </next>
 

OrganisationsFolder.OrgSearchResult


OrganisationsFolderES.OrgSearchResultES


PageViewedGoal


Paginator


Paginator2


PasswordResetPage


PaymentEvent

Called when a payment has been made Defines attributes - payment and recurring (RecurringTransactionBean) for recurring payments and customer (CustomerBean) for non recurring Trigger1 = true/false, where true indicates recurring Trigger2 = payment response code Example of email content: Thanks for your payment! Amount:

PaymentEventTriggerType


PaymentItemListAttachment

Represents an email attachment.

PaymentTransactionBean

Represents a payment through some payment provider, including its status and response codes

PdfDocument


PdfManager


Pipeline


PipelineBean

Contains summary information about the execution of a pipeline

PipelineProcessEvent

This event is fired when pipeline processing occurs. Actions are available for started, completed and failed
Event ID: pipelineProcess

PipelineProcessEventTriggerType


Points

Represents the issue of a number of credits in an incentive program, such as a prize draw or a set of gift vouchers to be allocated These are the credit side of the ledger, with PointsDebit being the debit side. The result of credits - debits is the points balance

PointsExpiredEvent

Fired when reward points expire

PointsExpiredEventTriggerType


PointsRowProvider

Updates - NOTE DONE YET!!!

PointsValueReachedGoal


PortletMappingBuilder


PostBean


PostSearchResource

Search for forum posts, comments, etc

ProductBean


ProductFolder


ProductImageResource


ProductInCategoryBean


ProductInCategoryTableProvider

This table provider takes care of inserting and updating the product in categories table,which links a product to a category
  • productName Eg "ABC-123" - Unique product identifier, ie SKU
  • categoryName - Eg "Electronics" - Unique identifier for the category to add products to

ProductInRewardResource


ProductInRewardTableProvider

This table provider takes care of inserting and updating the product in rewards table. This adds a product to a reward store.
  • productName Eg "ABC-123" - Unique product identifier, ie SKU
  • rewardStoreName - Eg "myrewardstore" - Unique identifier for the reward store to add products to
  • multiplier - Eg "2" - Multiplier for calculating points from base cost
  • margin - Eg "0.1" - Override margin from reward store
  • margin2 - Eg "2" - Override margin2 from reward store
  • gstRate - Eg "2" - Override GST rate from reward store
  • pointsOverride - Eg "2" - Final points value, overriding the calculated value

ProductOptionBean


ProductOptionsTable

The ProductOptionsTable handles inserting and updating product parameters and options, often called product variants A ProductParameter is something about a product which can have options, for example "size" and "color" are 2 common parameters. Each ProductParameter can have associated options. For example the "color" parameter could have options of "red" and "blue" The fields supported by this provider are:
  • productCode - Code for this variant, eg 'black'
  • parameterCode - Code for this variant type, eg 'colour'
  • parameterTitle - Title for this variant type, eg 'Choose your wonderful colour'
  • name - Code for this variant, eg 'black'
  • title - A descriptive title for the variant, eg 'Glossy Black'
  • cost - The incremental cost of this variant

ProductOrder


ProductOrderBean


ProductOrderOptionBean


ProductOrderStatus


ProductOrdersEngagementScoringFactorType

Scores engagement based on whether users have opened emails (ie pixel tracker has been hit) , or converted (ie clicked through)

ProductParameterBean


ProductsFolder


ProductsTable

This is a database table provider for Products Note that products can be associated with categories, and product options, and can also be added to reward stores. Use the CategoryTableProvider to setup categories, the ProductOptionsTable to setup variants, parameters and options for each product, and ProductInRewardTableProvider to associate products with reward stores This handles specific fields:
  • name - Unique identifier, ie health-fitness
  • title - A descriptive title for the category
  • notes - More description and notes
  • status
  • baseCost - The base cost of this item
  • freightCost - The cost to ship the item
  • category - A category to add the product to

ProfileActiveEvent

Fired when a profile is activated, ie not logged in but associated with the current request

ProfileBean


ProfilePage

User's own profile page, for use within a website

Access on /profile/

Supports REST access to return JSON data if you set a json content type

curl 'http://version1.airpoints.loopbackdns.com:8080/profile/' -H 'Host: version1.airpoints.loopbackdns.com:8080' -H 'Accept: application/json'
 {
   "data":{
      "optins":{
      },
      "profile":{
         "firstName":"dd",
         "notes":"",
         "surName":"dd",
         "phone":"123123123",
         "nickName":"admin",
         "name":"admin",
         "href":"/users/admin/public",
         "userName":"admin",
         "userId":2,
         "email":"brad@xxxxx",
         "photoHash":"61084ad4739a840d9983978a48c84ea6cd793251"
      }
   },
   "fieldMessages":[

   ],
   "messages":[

   ],
   "nextHref":"",
   "status":false
}
 

ProfilePicResource


ProfileTableProvider

Updates profile and membership info

ProgramFolder


ProgramsFolder

This is the root folder for e-learning. Its direct children are all programs in the current website. You can use this to find programs and courses available for the current user, or all which exist.

ProgramsModel.EnrolementModel


ProgramsModel


PromotionEntryGoal


PublicProfilePage

User's own profile page, for use within a website

PurchaseAmount

Represents an amount of a certain currency required to purchase something

Queries.AppIndexerField


Queries.QueryTable


Queries.ResultRows


Queries

Cacheable parssed representation of the query config in a repo

QueriesFolder


QueryBean


QueryBuilderBean


QueryField


QueryManager


QueryService


QuizAttemptEvent

An event triggered by some condition related to learning progress, eg starting, completing or not completing after some period

The attributes collection contains the ModuleFolder called module


Event ID: quizAttempt

QuizAttemptEventTriggerType


QuizInfo


QuizResult


RecognitionEvent


RecognitionService.LevelStatus


RecognitionService

A service to manage recognition entities like Topic, Badge and Level

RecordBean


RecordExecutionStep

Wraps processing in a transaction and commits it in the finished phase This allows executions to be tagged with an execution ID, which is intended to unqiuely identify an import or export of this pipeline. This can be used to prevent multiple processings of the same data. For example, you might have a file containing points being loaded once each day. You might use an execution ID template which evaluates to (for example) "points-31012015". Then if another execution generated the same ID you would conclude this is a double-import and throw an error.

ReferralEvent

This represents a referral step. This will be fired twice on a referral, once for the sender as the source profile, and once with the recipient as the source profile It will also be fired when a referral converts to a signup See the action property for determining which of those.
Event ID: referral

ReferralEventTriggerType


ReferralPage

Post to /referral in a website with the following: - toName: the name of the recipient, user entered - toEmail: the email address of the recipient, user entered - message: the optional personal message to send, user entered. - pageHref: the optional page path to invite the user to, defaults to the root

RegisterOrLoginPage


RemoveFromGroupGoalAction


RemoveProfileGoalAction


RenderFileResource

This class is for rendering HTML pages. It wraps a normal FileResource and parses its content, expecting it to be a well formed HTML page. It extracts a template, if present in a link tag, and if not present defaults it to theme/page, so it will use the page.html template of the current theme Example: home page The title, template and body can be updated with a POST to this Also supports read/write parameters embedded in the html, such as: module 1

RepoAppAction

This node executes a method on a custom app.

When entered, this node will search through all repo apps looking for a RepoAppActionNodeType (aka customAction) with the same nodeType value. If found it will execute the jsMethod on the app, passing the current rootfolder, lead, funnel and exiting node as arguments

If the function returns a value, this will be returned as the next node id

RepoAppEventGoal

A goal which is achieved when an event defined by a repo app is fired This is intended to work with repo apps

RepoAppEventListener


RepoAppFunnelEvent

A funnel event to be fired by custom apps. This is intended to work with RepoAppEventGoal

RepoAppSettings


RepoAppWebsocket


RepoAppWebsocketMapping


RepoAppsEventManager

This Listens for event's on the platform and Passes it on to custom apps listening for that event. The following event types are captured:
  • TriggerEvent - This includes all the automation triggers available
  • ResourceEvent - This gets fired when a repository resource gets accessed or changed. Includes events like DeleteEvent, AccessedEvent, MoveEvent, PutEvent, NewFolderEvent

RepoMailboxStandardMessage.MyAttachment

Represents an email attachment

RepoMailboxStandardMessage

Represents an email message

ReportBean


ReportParams

Provides a standardised means for parsing common report request parameters

ReportingApp


RepositoryApp.RepoQueryTable


RepositoryApp


RepositoryAppTheme


RepositoryAppTriggerEvent


RepositoryAppTriggerType


ResourceList

This is a specialised List used for manipulating and querying resources You'll usually this to sort, group, filter lists, as well as create new lists which you can add to in the template

ResourcesPage

Displays resources based on what gruops the current user is enrolled in Reads from a conventional folder structure associated with the website: /resources/[group-name] where group-name is the name of a group which is associated with the current website

Reward

Represents an incentive program, such as a prize draw or a set of gift vouchers to be allocated

RewardBean


RewardCurrency


RewardEntryAttachment

This represents the attachment for an entry. Usually for uploading photos

RewardFolder

This is for non-learning rewards, ie competitions A RewardsFolder represents a Reward, and is a folder which can contain arbitrary content resources like images etc

RewardGrantedEvent

An event triggered by some condition related to learning progress, eg starting, completing or not completing after some period
Event ID: rewardGranted

RewardGrantedEventTriggerType


RewardService.PointsTransaction

Represents a single transaction, ie a purchase or a credit

RewardStoreApp.ExpiringPointsTable


RewardStoreApp.PointsBalanceBean

Represents the balance of a participant. A participant can be a user or organisation

RewardStoreCategoryFolder


RewardStoreEngagementScoringFactorType

Scores engagement based on whether users have opened emails (ie pixel tracker has been hit) , or converted (ie clicked through)

RewardStoreFolder

Represents a reward store. Provides methods for accessing the current user;s transaction history, points balance Child resources are category folders, which contain the products

Get recent points activity with the pointsActivity parameter:
?pointsActivity☆tDate=...&endDate...

Get the current points balance with the points parameter: ?points { balance : 1000, availableBalance: 950 }


RewardStoreTemplateHelper


RewardUploadsFolder

This is a special folder which is a child of a RewardFolder, which allows uploaded files to be viewed. There is a child for each entry with an uploaded file as an attachment

RewardsApp.RewardEntriesSummaryTable


RewardsApp.RewardEntriesTable


RewardsShoppingCartItemResource


RewardsTemplateHelper

Functions to assist with rewards and Points templating

RootFolder


SalesDataApp.SalesByOrgTable


SalesDataFolder

This page lets you POST to create, update and delete records of any data series by specifying parameters, including the amount and series name A data series is any series of time stamped values, often used for collecting sales data but can be used for any series.

SalesDataInserter

Creates a new sales data record for each call. Requires the following arguments
  • Amount
  • Attributed to - orgId for an organisation, or email or userid for a profile
  • From - date/time for the beginning of the period
  • To - date/time for the end of the period. Same as from if the data is for a single point in time
And any extra fields defined on the dataseries The columns list maps fields onto column numbers. The standard fields are: amount, attributedTo, fromDate, toDate

SalesDataRecord


SalesManagerRole


SalesPipeline


SalesRole


SalesTeamViewerRole


SearchConfig


SearchManager

This is the goto object for text search and analytics using elasticsearch

SearchResponseView

Write an Elastic searchResponse object directly to the output stream

SearchResult

Represents a single result in a search result page

SearchResults

Represents a search result, including the number of hits, the page information, the actual search results, and any aggregation results

SecurityManager


SendEmailGoalAction


SendSmsAction


SendToHubspotGoalAction


SeoContentBean


SeriesBean


SetAttributesStep

Selects the next step from a list of options Configured with a map of next steps, where the key for each step is used to select it Provide with either a column number or an attribute name to use to get the value to select the next step

SetFieldGoalAction


SetSourceLeadGoalAction


ShippingAddress


ShippingAddressBean


ShoppingCartBean


ShoppingCartEvent.ShoppingCartAction


ShoppingCartEvent

Fired when a item either gets added to the shopping cart or the checkout process is completed
Event ID: shoppingCart
  • ADDED_TO_CART - Fired when a item is added to the cart
  • CHECKOUT_COMPLETE - Fired when the checkout process has completed successfully
  • PAYMENT_PENDING - Fired when a checkout has been submitted but payment is pending to complete the process

ShoppingCartEventTriggerType


ShoppingCartGoal


ShoppingCartItemBean


ShoppingCartItemResource


ShoppingCartResource


SignupLog

Records a user signing up to a group

SimpleHtmlTemplater


SmsApp.SmsStats


SmsDeliveryEventTriggerType


SmsResultGoal


SocialInteractionGoal


SpliffyContentGenerator.ErrorResource


SpliffyContentGenerator


Stage


StartAndWaitFunnelGoal


StartFunnelGoalAction


StreamActivitySearchPage

Outputs the stream activity as json

StreamActivitySummaryResource

Outputs the stream activity as json

StreamEventBean

Represents the occurence of a generalised action

StreamEventBeanBuilder

Creates a StreamEventBean object that is used to push items into the profile timeline

StreamItemPage

Outputs the stream activity as json

StreamService

A stream event represents an action on an item. The action has a severity catgegory (eg info, success), a description, an icon

SubmissionBean

Represents a submission to a poll, survey or competition

SubscriptionEvent

Fired when a user joins a group

Event ID: subscription

SubscriptionEventTriggerType


SurveyRowProvider

Updates not supported yet Allows criteria parameters of startDate, finishDate and rewardNames

TakeLeadRole


TargetsMap

Just lets you get a target by name for the given result

TaskCompleteGoal

Triggers a goal as attained when the

TaskGoal.TaskOutcome


TaskGoal


TaskReminderDef


TeamBucket


TemplateOutput

Execute a velocity template, writing the result to the output. This can be used for generating a result which returnes warnings etc

TemplateReportAttachmentFile

This is wrapped around Report instaneces of type TemplateReport. Most notably this includes reports defined in custom apps This will generate a downloadable attachment (eg CSV) from the TemplateReport instance

TemplateReportPage

This is wrapped around Report instaneces of type TemplateReport. Most notably this includes reports defined in custom apps This type of report is the most generic, it allows the report author to provide a template which generates any output. There are no filtering options built in so the template must define and apply any which are required However the standard ReportParams object is included as a property for convenience For custom apps, they will normally execute a search using the searchManager which is a property of this resource

TemplatedHtmlPage

This is used for pages which just need to generate a template. Its often extended to provide additional methods Gets its title from the template

TemplatingApplication.TemplateDef


TestSplitAction


TestTriggerEvent


TextOptionType


TextView


ThemeBean


ThemeDependentHtmlTemplater

Allows selecting an instance of HtmlTemplater based on the theme

TimerGoal

When an automation event is triggered

TransactionStep

Wraps processing in a transaction and commits it in the finished phase

TriggerEvent

A TriggerEvent gets fired when some significant event occurs on the server.

The trigger item properties represent textual values that can be keyed on for event triggers. Typically these will be id's of objects in context of the event, such as the website, group, etc.

The types of events are:


TriggerFiredEvent

Fired when another trigger fires

TriggerFiredEventTriggerType

This type of event is for chaining triggers. It is triggered when another trigger (possibly delayed) fires.

TriggerTimerEvent


TriggerTypeBuilder

Use this to create an automation trigger. This will allow you to add a trigger to the automation page For example:
 controllerMappings
         .automationTrigger
         .triggerId('testTrigger')
         .description('This is a test trigger')
         .format('genFormat')
         .addOption("Type", "populateOptions")
         .build();

 function populateOptions(){
     var list = formatter.newListOptionBuilder();

     for(var i = 1; i < 11; i++){
         list.addOption('t' + i, 'T' + i);
     }

     return list.build();
  }

  function genFormat(page, t1, t2, t3, t4, t5){
     log.info('page={} t1={} t2={} t3={} t4={} t5={}',page, t1, t2, t3, t4, t5);
     return 'New post received';
  }
 

UserAgentParserWrapper

Provides access to the user agent parser

UserDao.ProfileMatchRequest


UserManager


UserResource


UserVisitEvent

A UserVisitEvent is raised when a user first visits a site (ie the first GET request) at least 24 hours since the last visit
Event ID: userVisit

UserVisitEventTriggerType

This trigger type means when a user has received a vote, which is not the user who made the vote!

UserVisitGoal

When a profile is added/removed to a group

Variant


VelocityHtmlTemplater

Builds pages by plugging a few things in together: - a static skeleton for a HTML page, ie the html, header and body tags - a Theme, which defines web resources, such as js and css files, to include in the header. And which defines one or more layouts for the body. - the template itself, which provides more web resources to be included in the header, and the body layout which will be injected into the theme template. Also defines a parameter indicating which theme template to use

VelocityOutputStep

Generates HTML template and outputs it to the pipeline output

ViewEmailPage


ViewsBuilder

Provides methods for creating views, for templating, returning JSON, and redirects

VoteReceivedEvent

This represents a vote being received by a user on their post or comment Trigger items:
1 - website
2 - the vote amount (usually +1 or -1)
3 - total votes for the post or comment
4 - the type of the post, C=comment, FP=forum post, FR=forum reply
Event ID: voteReceived

VoteReceivedEventTriggerType

This trigger type means when a user has received a vote, which is not the user who made the vote!

VotedEvent

This represents a user voting on a post. The user in context is the user doing the voting, not the user receiving the vote! Trigger items:
1 - website
2 - the vote amount (usually +1 or -1)
Event ID: VotedEvent

VotedEventTriggerType


VoucherBean


VoucherPage


VoucherRedemptionPage

This is the top level resource for voucher redemptions and management Users use this page to search for vouchers and change their status to redeemed, pending, etc, or to reset their status when a mistake has occurred.

VoucherStateGoal

When voucher is issued or change it state

VoucherStateSummary


VoucherStatusChangeBean


VoucherTypeFolder


VoucherTypeSummary


WebEngagementScoringFactorType

Scores engagement based on whether users have opened emails (ie pixel tracker has been hit) , or converted (ie clicked through)

WebServiceStep


WebsiteRootFolder

Represents the root of a website. A "website" in this context is a product, its a customer facing side of some activity, such as Learning Management System or business website. Resources within a WebsiteRootFolder will often behave differently then if they were located under a OrganisationRootFolder, because the assumption is that websites are for customers, while aadministrators will accessing the organisation directly While WebsiteRootFolder is a view of a repository (or rather a branch within a repository) it also provides access to other repositories. Any repository within the containing organisation can be access by name from the root folder. For example, if an org has this structure: myOrg - milton.io - maven ... then requests to http://milton.io/maven will show the maven repository

WebsocketMappingBuilder


XMLHttpRequest


Javascript

Videos

Using the FuseLMS video support with javascript or with html classes

jQuery Comments plugin

Displaying and creating page comments with jquery.comments.js

jQuery Forms plugin

The Kademi jquery forms plugin allows seemless integration between simple html forms and server side data, behaviour and responses. All forms should be submitted with this plugin.

jQuery Module plugin

The Kademi Module plugin for E-learning module page. This plugin initializes click event handlers for Previous, Next, Submit and page links on module page.

jQuery OrgFinder plugin

The Kademi jQuery plugin allows to search organisation by free text and display matched ones in a list and Google Map. User can select organisation by click on list item or marker on Google Map

jQuery User plugin

Logging in manipulating user data in javascript with the jquery.user.js plugin

Ask a question, or offer an answer